package main

func main() {
	var (
		a = 5
		b = 2
	)
	println(a + b)
	println(a - b)
	println(a * b)
	println(a / b)
	println(a % b)
	a++ // 单独的语句，不能放在=的右边赋值 ==> a= a+1
	b-- // 单独的语句，不能放在=的右边赋值 ==> c = b-1
	println(a)
	println(b)
	// 关系运算
	println(a == b)
	println(a >= b)
	println(a <= b)
	println(a > b)
	println(a < b)
	// 逻辑运算
	if a > b && a%b == 1 {
		println("执行了")
	}
	if a > b || a%b == 1 {
		println("执行了")
	}
	if a%b != 1 {
		println("执行了")
	}

	// 位运算：针对二进制数  // ip计算用到位移运算符
	// 5的二进制表示: 101
	// 2的二进制表示:  10
	// &:按位与 (两位均为1才为1)
	println(5 & 2)
	// |:按位与 (两位有一个为1就为1)
	println(5 | 2)
	// ^:按位异或 (两位不一样则为1)
	println(5 ^ 2)
	// <<: 将二进制位左移指定位数
	println(5 << 1)  // 1010 => 10
	println(1 << 10) // 10000000000 => 1024
	// >>: 将二进制位右移指定位数
	println(5 >> 1) // 10 => 2
	println(5 >> 2) // 1 => 1

	// 赋值运算符
	var x int
	x = 10  //x = 10
	x += 1  //x = x + 1
	x -= 2  //x = x - 1
	x *= 3  //x = x * 1
	x /= 2  //x = x / 1
	x %= 2  //x = x % 1
	x <<= 2 //x = x << 1
	x &= 2  //x = x & 1
	x |= 3  //x = x | 1
	x ^= 4  //x = x ^ 1
	x >>= 4 //x = x >> 1
	println(x)
}
